// import router, { asyncRoutes, constantRoutes } from '@/router/index'
import router from './router'
import store from '@/store/index'

// 前置路由守卫
router.beforeEach(async(to, from, next) => {
  // to 去哪里的路由信息
  // from 从哪里来的信息
  // next方法: 控制能跳转
  // 如果没有登录则跳转登录页面 如果登录则允许跳转
  // 白名单 允许访问
  if (['/login', '/learnVuex', '/404'].includes(to.path)) {
    return next()
  }

  if (store.state.user.token) {
    // 允许页面跳转
    // 获取用户信息如果为空
    // 获取用户菜单标识,方式2-从返回值
    if (!store.state.user.userInfo.userId) {
      // 解决刷新404/白屏的问题
      // (1)把404放到路由最后面
      // (2)重新跳转一次
      // next(to.path)

      // 菜单权限-标准写法(用vuex)
      const { roles: { menus }} = await store.dispatch('user/getUserInfo')
      const filterRoutes = await store.dispatch('permission/filterRoutes', menus)
      // 添加路由到路由配置当中
      // 注意:addRoutes不会初始配置
      router.addRoutes(filterRoutes)
      next(to.path)
    }
    next()
  } else {
    // 跳转到登录页面
    next('/login')
  }
})

// 后置路由守卫 一般不用
router.afterEach((to, from, next) => {

})
